The present disclosure relates to hardware decompression of an encoded data stream that includes multiple deflate blocks. More particularly, the present disclose relates to recycling encoded data through a decoder pipeline after detecting deflate block end of block symbols.
Computer systems compress data for various reasons, such as to reduce storage requirements or to reduce bandwidth requirements when sending data over a computer network. One approach to compress data is referred to as “DEFLATE”. Deflate is a data compression algorithm that uses a combination of an LZ77 algorithm and Huffman coding to compress data. Deflate data streams include a series of “deflate blocks.” Each deflate block includes a header, Huffman encoded deflate elements, and a Huffman encoded end of block element. A deflate block's header includes information to configure a decompression engine that, in turn, decompresses each Huffman element included in the specific deflate block. Deflate blocks may be static deflate blocks (use static Huffman encoding), dynamic deflate blocks (includes a Huffman tree in the header), or non-compressed blocks with varying sizes.